Python之路 - Socket实现QQ聊天
介绍 🍀
在上一篇中写了最基本版的socket服务端和客户端 , 即仅能通信一次后就自动关闭了 , 显然实际应用中可不是这样的 , 那就来写一个像QQ一样的聊天程序吧
TCP实现 🍀
因为TCP是有链接的 , 这就导致只能有一个服务端 , 但是可以有多个客户端
tcpqq_server.py
1 | import socket |
tcpqq_client.py
1 | import socket |
当然实际应用中是不会用TCP来完成的 , 而是用UDP , 这里只是模拟 , 并且以上还有有问题没有解决的 , 比如如果发送的消息大于1024字节 , 那么就不能完整接收信息了 , 后续再进行处理
TCP版本的服务端可以允许同时连入5个客户端 , 值得注意的是并不是同时连入 , 按照顺序排队 , 只有前面的人说完了会连入后序的客户端
UDP实现 🍀
以为UDP是无链接的 , 所以它可以实现想跟谁说话就跟谁说话
udpqq_server.py
1 | import socket |
udpqq_client.py
1 | import socket |
利用UDP实现才更接近现实 , 我们只需要知道他的ip和端口 , 我们就可以跟他讲话 , 在他即可以是服务端 , 也可以是客户端 , 不过必须注意接收和发送流程的问题
以上两种实现方式 , 都只是最基础的版本 , 在UDP中我们可以将所有人的ip和端口放到一个字典里或者其他存储里 , 利用ip和端口就可以实现跟所有人进行聊天了